home *** CD-ROM | disk | FTP | other *** search
- /*
- File: menu.c
-
- Contains:
-
- Written by: EL
-
- Copyright: Copyright © 1991-1999 by Apple Computer, Inc., All Rights Reserved.
-
- You may incorporate this Apple sample source code into your program(s) without
- restriction. This Apple sample source code has been provided "AS IS" and the
- responsibility for its operation is yours. You are not permitted to redistribute
- this Apple sample source code as "Apple sample source code" after having made
- changes. If you're going to re-distribute the source, we require that you make
- it clear in the source that the code was descended from Apple sample source
- code, but that you've made changes.
-
- Change History (most recent first):
- 08/2000 JM Carbonized, non-Carbon code is commented out
- for demonstration purposes.
- 7/16/1999 KG Updated for Metrowerks Codewarror Pro 2.1
-
-
- */
- #include "out.h"
- #include <Resources.h>
- #include <Menus.h>
-
-
- MenuHandle appleMenu, fileMenu, patMenu, animMenu;
-
- enum {
- appleID = 1,
- fileID,
- patID,
- animID
- };
-
- enum {
- quitItem = 1
- };
-
- enum {
- pat1Item = 1,
- pat2Item,
- pat3Item,
- pat4Item,
- pat5Item,
- pat6Item,
- pat7Item,
- pat8Item
- };
-
- enum {
- startItem = 1,
- stopItem,
- forItem = 4,
- revItem,
- colorItem = 7,
- grayItem,
- resetItem
- };
-
- void setUpMenus()
- {
- InsertMenu( appleMenu = NewMenu( appleID, "\p\024" ), 0 );
- InsertMenu( fileMenu = NewMenu( fileID, "\pFile" ), 0 );
- InsertMenu( patMenu = NewMenu( patID, "\pDemo" ), 0 );
- InsertMenu( animMenu = NewMenu( animID, "\pAnimation" ), 0 );
-
- DrawMenuBar();
-
- AppendMenu( appleMenu, "\pAbout Out of This GWorld;(-" );
- AppendResMenu( appleMenu, 'DRVR' );
-
- AppendMenu( fileMenu, "\pQuit/Q" );
- AppendMenu( patMenu, "\pColor Scale/1;Color Wheels/2;Color Rings/3;Color Gears/4;Color Curves/5;Color Balls/6;Color Wave/7;Color Text/8" );
- AppendMenu( animMenu, "\pStart Animation/A;Stop Animation/S;(-;Forward/F;Reverse/R;(-;Color Palette/C;Gray Palette/G;Reset Palette/R" );
- }
-
- void adjustMenus()
- {
- //register WindowPeek wp = (WindowPeek)FrontWindow();
- register WindowPtr wp = FrontWindow();
- //short kind = wp ? wp->windowKind : 0;
- short kind = GetWindowKind(wp);
-
- Boolean DA = kind < 0;
-
- enable( fileMenu, quitItem, true );
- enable( patMenu, pat1Item, gCurrentPat != pat1Item );
- enable( patMenu, pat2Item, gCurrentPat != pat2Item );
- enable( patMenu, pat3Item, gCurrentPat != pat3Item );
- enable( patMenu, pat4Item, gCurrentPat != pat4Item );
- enable( patMenu, pat5Item, gCurrentPat != pat5Item );
- enable( patMenu, pat6Item, gCurrentPat != pat6Item );
- enable( patMenu, pat7Item, gCurrentPat != pat7Item );
- enable( patMenu, pat8Item, gCurrentPat != pat8Item );
-
- enable( animMenu, startItem, gCurrentMove != START );
- enable( animMenu, stopItem, gCurrentMove != STOP );
- enable( animMenu, forItem, gCurrentDir != FORWARD );
- enable( animMenu, revItem, gCurrentDir != REVERSE );
- enable( animMenu, colorItem, gCurrentColor != COLOR );
- enable( animMenu, grayItem, gCurrentColor != GRAY );
- enable( animMenu, resetItem, true );
- }
-
- void enable( menu, item, ok )
- MenuHandle menu;
- {
- if (ok)
- //EnableItem( menu, item );
- EnableMenuItem( menu, item );
- else
- //DisableItem( menu, item );
- DisableMenuItem( menu, item );
- }
-
- void handleMenu( mSelect )
- long mSelect;
- {
- int menuID = HiWord( mSelect );
- int menuItem = LoWord( mSelect );
- //GrafPtr savePort;
- //Str255 name;
- //RGBColor aColor;
-
- switch (menuID)
- {
- case appleID:
- if (menuItem == 1)
- {
- gCurrentPat = -1;
- defineColorPalette();
- updatePalette();
- createImage();
- drawImage();
- }
- else
- {
- /*GetPort( &savePort );
- GetMenuItemText( appleMenu, menuItem, name );
- OpenDeskAcc( (ConstStr255Param)name );
- SetPort( savePort );*/
- }
- break;
-
- case fileID:
- switch (menuItem)
- {
- case quitItem:
- cleanUp();
- break;
- }
- break;
-
- case patID:
- gCurrentPat = menuItem;
- createImage();
- drawImage();
- break;
-
- case animID:
- switch (menuItem)
- {
- case startItem:
- gCurrentMove = START;
- break;
- case stopItem:
- gCurrentMove = STOP;
- break;
- case forItem:
- gCurrentDir = FORWARD;
- break;
- case revItem:
- gCurrentDir = REVERSE;
- break;
- case colorItem:
- defineColorPalette();
- updatePalette();
- break;
- case grayItem:
- defineGrayPalette();
- updatePalette();
- break;
- case resetItem:
- if (gCurrentColor == COLOR || gCurrentPat == -1)
- defineColorPalette();
- else
- defineGrayPalette();
- updatePalette();
- break;
- }
- break;
- }
- HiliteMenu( 0 );
- }